Title Banner

Previous Book Contents Book Index Next

Inside Macintosh: QuickTime Components /
Chapter 10 - Derived Media Handler Components


Summary of Derived Media Handler Components

C Summary

Constants

/* flags in flags parameter of MediaSetHandlerCapabilities function */
enum {
   handlerHasSpatial       =  1<<0,       /* draws */
   handlerCanClip          =  1<<1,       /* clips */
   handlerCanMatte         =  1<<2,       /* reserved */
   handlerCanTransferMode  =  1<<3,       /* does transfer modes */
   handlerNeedsBuffer      =  1<<4,       /* use offscreen buffer */
   handlerNoIdle           =  1<<5,       /* never draws */
   handlerNoScheduler      =  1<<6,       /* schedules self */ 
   handlerWantsTime        =  1<<7,       /* needs more time */
   handlerCGrafPortOnly    =  1<<8        /* color only */
};

/* values for inFlags parameter of MediaIdle function */
enum {
   mMustDraw               =     1<<3,    /* must draw now */
   mAtEnd                  =     1<<4,    /* current time corresponds to 
                                             end of movie */
   mPreflightDraw          =     1<<5     /* must not draw */
};

/* values for outFlags parameter of MediaIdle function */
enum {
   mDidDraw                =     1<<0,    /* did draw */
   mNeedsToDraw            =     1<<2     /* needs to draw */
};

/* component type and subtype values */
#define MediaHandlerType   'mhlr'      /* derived media handler */
#define BaseMediaType      'gnrc'      /* base media handler */
/* constants used in the characteristic parameter of the
   MediaHasCharacteristic function */
#define VisualMediaCharacteristic'eyes'   /* visual media characteristic */
#define AudioMediaCharacteristic 'ears'   /* audio media characteristic */
/* selectors for derived media handler components */
enum {
   enum {
   kMediaInitializeSelect              = 0x501, /* MediaInitialize */
   kMediaSetHandlerCapabilitiesSelect  = 0x502,                                  
                                          /* MediaSetHandlerCapabilities */
   kMediaIdleSelect                    = 0x503, /* MediaIdle */
   kMediaGetMediaInfoSelect            = 0x504, /* MediaGetMediaInfo */
   kMediaPutMediaInfoSelect            = 0x505, /* MediaPutMediaInfo */
   kMediaSetActiveSelect               = 0x506, /* MediaSetActive */
   kMediaSetRateSelect                 = 0x507, /* MediaSetRate */
   kMediaGGetStatusSelect              = 0x508, /* MediaGGetStatus */
   kMediaTrackEditedSelect             = 0x509, /* MediaTrackEdited */
   kMediaSetMediaTimeScaleSelect       = 0x50A, /* MediaSetMediaTimeScale */
   kMediaSetMovieTimeScaleSelect       = 0x50B, /* MediaSetMovieTimeScale */
   kMediaSetGWorldSelect               = 0x50C, /* MediaSetGWorld */
   kMediaSetDimensionsSelect           = 0x50D, /* MediaSetDimensions */
   kMediaSetClipSelect                 = 0x50E, /* MediaSetClip */
   kMediaSetMatrixSelect               = 0x50F, /* MediaSetMatrix */
   kMediaGetTrackOpaqueSelect          = 0x510, /* MediaGetTrackOpaque */
   kMediaSetGraphicsModeSelect         = 0x511, /* MediaSetGraphicsMode */
   kMediaGetGraphicsModeSelect         = 0x512, /* MediaGetGraphicsMode */
   kMediaGSetVolumeSelect              = 0x513, /* MediaGSetVolume */
   kMediaSetSoundBalanceSelect         = 0x514, /* MediaSetSoundBalance */
   kMediaGetSoundBalanceSelect         = 0x515, /* MediaGetSoundBalance */
   kMediaGetNextBoundsChangeSelect     = 0x516, 
                                          /* MediaGetNextBoundsChange */
   kMediaGetSrcRgnSelect               = 0x517, /* MediaGetSrcRgn */
   kMediaPrerollSelect                 = 0x518, /* MediaPreroll */
   kMediaSampleDescriptionChangedSelect = 0x519,
                                          /* MediaSampleDescriptionChanged */
   kMediaHasCharacteristicSelect       = 0x51A  /* MediaHasCharacteristic */
};

Data Type

typedef struct {
   short          version;          /* version--always 0 */
   Movie          theMovie;         /* movie identifier */
   Track          theTrack;         /* track identifier */
   Media          theMedia;         /* media identifier */
   TimeScale      movieScale;       /* movie's time scale */
   TimeScale      mediaScale;       /* media's time scale */
   TimeValue      movieDuration;    /* movie's duration */
   TimeValue      trackDuration;    /* track's duration */
   TimeValue      mediaDuration;    /* media's duration */
   Fixed          effectiveRate;    /* media's effective rate */
   TimeBase       timeBase;         /* media's time base */
   short          volume;           /* media's volume */
   Fixed          width;            /* width of display area */
   Fixed          height;           /* height of display area */
   MatrixRecord   trackMovieMatrix; /* transformation matrix */
   CGrafPtr       moviePort;        /* movie's graphics port */
   GDHandle       movieGD;          /* movie's graphics device */
   PixMapHandle   trackMatte;       /* track's matte */
} GetMovieCompleteParams;

Functions

Managing Your Media Handler Component

pascal ComponentResult MediaInitialize 
(ComponentInstance ci, 
GetMovieCompleteParams *gmc);
pascal ComponentResult MediaIdle 
(ComponentInstance ci, 
TimeValue atMediaTime, long flagsIn, 
long *flagsOut, const TimeRecord *movieTime);
pascal ComponentResult MediaGGetStatus 
(ComponentInstance ci, 
ComponentResult *statusErr);

General Data Management

pascal ComponentResult MediaPutMediaInfo 
(ComponentInstance ci, Handle h);
pascal ComponentResult MediaGetMediaInfo 
(ComponentInstance ci, Handle h);
pascal ComponentResult MediaSetActive 
(ComponentInstance ci, Boolean enableMedia);
pascal ComponentResult MediaPreroll 
(ComponentInstance ci, TimeValue time, 
Fixed rate);
pascal ComponentResult MediaSetRate 
(ComponentInstance ci, Fixed rate);
pascal ComponentResult MediaTrackEdited 
(ComponentInstance ci);
pascal ComponentResult MediaSampleDescriptionChanged 
(ComponentInstance ci, long index);
pascal ComponentResult MediaHasCharacteristic 
(ComponentInstance ci, 
OSType characteristic, Boolean *hasIt);
pascal ComponentResult MediaSetMediaTimeScale 
(ComponentInstance ci, TimeScale newTimeScale);
pascal ComponentResult MediaSetMovieTimeScale 
(ComponentInstance ci, TimeScale newTimeScale);

Graphics Data Management

pascal ComponentResult MediaSetGWorld 
(ComponentInstance ci, CGrafPtr aPort, 
GDHandle aGD);
pascal ComponentResult MediaSetDimensions 
(ComponentInstance ci, Fixed width, 
Fixed height);
pascal ComponentResult MediaSetMatrix 
(ComponentInstance ci, 
const MatrixRecord *trackMovieMatrix);
pascal ComponentResult MediaSetClip 
(ComponentInstance ci, RgnHandle theClip);
pascal ComponentResult MediaGetTrackOpaque 
(ComponentInstance ci, Boolean *trackIsOpaque);
pascal ComponentResult MediaGetNextBoundsChange 
(ComponentInstance ci, TimeValue *when);
pascal ComponentResult MediaGetSrcRgn 
(ComponentInstance ci, RgnHandle rgn, 
TimeValue atMediaTime);

Sound Data Management

pascal ComponentResult MediaGSetVolume 
(ComponentInstance ci, short volume);

Base Media Handler Utility Function

pascal ComponentResult MediaSetHandlerCapabilities 
(ComponentInstance ci, long flags, 
long flagsMask);

Pascal Summary

Constants

CONST
{flags in flags parameter of MediaSetHandlerCapabilities function}
   handlerHasSpatial       =  $1;         {draws}
   handlerCanClip          =  $2;         {clips}
   handlerCanMatte         =  $4;         {reserved}
   handlerCanTransferMode  =  $8;         {does transfer modes}
   handlerNeedsBuffer      =  $10;        {use offscreen buffer}
   handlerNoIdle           =  $20;        {never draws}
   handlerNoScheduler      =  $40;        {schedules self} 
   handlerWantsTime        =  $80;        {needs more time}
   handlerCGrafPortOnly    =  $100;       {color only}

{values for inFlags parameter of MediaIdle function}
   mMustDraw               =     $8;      {must draw now}
   mAtEnd                  =     $10;     {current time corresponds to }
                                          { end of movie}
   mPreflightDraw          =     $20;     {must not draw}

{values for outFlags parameter of MediaIdle function}
   mDidDraw                =     $1;      {did draw}
   mNeedsToDraw            =     $4;      {needs to draw}

{component type and subtype values}
   MediaHandlerType           'mhlr'      {derived media handler}
   BaseMediaType              'gnrc'      {base media handler}
{constants used in the characteristic parameter of the }
{ MediaHasCharacteristic function}
   VisualMediaCharacteristic     'eyes'      {visual media characteristic}
   AudioMediaCharacteristic      'ears'      {audio media characteristic}
{selectors for derived media handler components}
   kMediaInitializeSelect              = $501;  {MediaInitialize}
   kMediaSetHandlerCapabilitiesSelect  = $502;  {MediaSetHandlerCapabilities}
   kMediaIdleSelect                    = $503;  {MediaIdle}
   kMediaGetMediaInfoSelect            = $504;  {MediaGetMediaInfo}
   kMediaPutMediaInfoSelect            = $505;  {MediaPutMediaInfo}
   kMediaSetActiveSelect               = $506;  {MediaSetActive}
   kMediaSetRateSelect                 = $507;  {MediaSetRate}
   kMediaGGetStatusSelect              = $508;  {MediaGGetStatus}
   kMediaTrackEditedSelect             = $509;  {MediaTrackEdited}
   kMediaSetMediaTimeScaleSelect       = $50A;  {MediaSetMediaTimeScale}
   kMediaSetMovieTimeScaleSelect       = $50B;  {MediaSetMovieTimeScale}
   kMediaSetGWorldSelect               = $50C;  {MediaSetGWorld}
   kMediaSetDimensionsSelect           = $50D;  {MediaSetDimensions}
   kMediaSetClipSelect                 = $50E;  {MediaSetClip}
   kMediaSetMatrixSelect               = $50F;  {MediaSetMatrix}
   kMediaGetTrackOpaqueSelect          = $510;  {MediaGetTrackOpaque}
   kMediaSetGraphicsModeSelect         = $511;  {MediaSetGraphicsMode}
   kMediaGetGraphicsModeSelect         = $512;  {MediaGetGraphicsMode}
   kMediaGSetVolumeSelect              = $513;  {MediaGSetVolume}
   kMediaSetSoundBalanceSelect         = $514;  {MediaSetSoundBalance}
   kMediaGetSoundBalanceSelect         = $515;  {MediaGetSoundBalance}
   kMediaGetNextBoundsChangeSelect     = $516;  {MediaGetNextBoundsChange}
   kMediaGetSrcRgnSelect               = $517;  {MediaGetSrcRgn}
   kMediaPrerollSelect                 = $518;  {MediaPreroll}
   kMediaSampleDescriptionChangedSelect= $519;
                                             {MediaSampleDescriptionChanged}
   kMediaHasCharacteristicSelect       = $51A;  {MediaHasCharacteristic}

Data Type

TYPE
   GetMovieCompleteParams =
   RECORD
      version:          Integer;          {version; always 0}
      theMovie:         Movie;            {movie identifier}
      theTrack:         Track;            {track identifier}
      theMedia:         Media;            {media identifier}
      movieScale:       TimeScale;        {movie's time scale}
      mediaScale:       TimeScale;        {media's time scale}
      movieDuration:    TimeValue;        {movie's duration}
      trackDuration:    TimeValue;        {track's duration}
      mediaDuration:    TimeValue;        {media's duration}
      effectiveRate:    Fixed;            {media's effective rate}
      timeBase:         TimeBase;         {media's time base}
      volume:           Integer;          {media's volume}
      width:            Fixed;            {width of display area}
      height:           Fixed;            {height of display area}
      trackMovieMatrix: MatrixRecord;     {transformation matrix}
      moviePort:        CGrafPtr;         {movie's graphics port}
      movieGD:          GDHandle;         {movie's graphics device}
      trackMatte:       PixMapHandle;     {track's matte}
   END;

Routines

Managing Your Media Handler Component

FUNCTION MediaInitialize (ci: ComponentInstance; 
VAR gmc: GetMovieCompleteParams): 
ComponentResult;
FUNCTION MediaIdle (ci: ComponentInstance; atMediaTime: TimeValue; 
flagsIn: LongInt; VAR flagsOut: LongInt; 
VAR movieTime: TimeRecord): ComponentResult;
FUNCTION MediaGGetStatus (ci: ComponentInstance; 
VAR statusErr: ComponentResult): 
ComponentResult;

General Data Management

FUNCTION MediaPutMediaInfo (ci: ComponentInstance; h: Handle): 
ComponentResult;
FUNCTION MediaGetMediaInfo (ci: ComponentInstance; h: Handle): 
ComponentResult;
FUNCTION MediaSetActive (ci: ComponentInstance; enableMedia: Boolean): 
ComponentResult;
FUNCTION MediaPreroll (ci: ComponentInstance; time: TimeValue; 
rate: Fixed): ComponentResult;
FUNCTION MediaSetRate (ci: ComponentInstance; rate: Fixed): 
ComponentResult;
FUNCTION MediaTrackEdited (ci: ComponentInstance): ComponentResult;
FUNCTION MediaSampleDescriptionChanged
(ci: ComponentInstance; index: LongInt): ComponentResult;
FUNCTION MediaHasCharacteristic 
(ci: ComponentInstance; characteristic: OSType; VAR hasIt: Boolean): ComponentResult;
FUNCTION MediaSetMediaTimeScale 
(ci: ComponentInstance; 
newTimeScale: TimeScale): ComponentResult; 
FUNCTION MediaSetMovieTimeScale 
(ci: ComponentInstance; 
newTimeScale: TimeScale): ComponentResult; 

Graphics Data Management

FUNCTION MediaSetGWorld (ci: ComponentInstance; aPort: CGrafPtr; 
aGD: GDHandle): ComponentResult;
FUNCTION MediaSetDimensions (ci: ComponentInstance; width: Fixed; 
height: Fixed): ComponentResult;
FUNCTION MediaSetMatrix (ci: ComponentInstance; 
VAR trackMovieMatrix: MatrixRecord): 
ComponentResult;
FUNCTION MediaSetClip (ci: ComponentInstance; theClip: RgnHandle): 
ComponentResult;
FUNCTION MediaGetTrackOpaque
(ci: ComponentInstance; 
VAR trackIsOpaque: Boolean): ComponentResult;
FUNCTION MediaGetNextBoundsChange 
(ci: ComponentInstance; VAR when: TimeValue): ComponentResult; 
FUNCTION MediaGetSrcRgn (ci: ComponentInstance; rgn: RgnHandle; 
atMediaTime: TimeValue): ComponentResult;

Sound Data Management

FUNCTION MediaGSetVolume (ci: ComponentInstance; volume: Integer): 
ComponentResult; 

Base Media Handler Utility Routine

FUNCTION MediaSetHandlerCapabilities 
(ci: ComponentInstance; flags: LongInt; flagsMask: LongInt): ComponentResult;


Previous Book Contents Book Index Next

© Apple Computer, Inc.
7 JUL 1996




Navigation graphic, see text links

Main | Top of Section | What's New | Apple Computer, Inc. | Find It | Feedback | Help